Technology advancements in recent years have permitted processes to operate in multicore processor environments. So, multiple processes are capable of executing in parallel on a single machine architecture that includes multiple independent processors.
Multicore operating systems generally treat a process as a single application and then manage system resources between other applications of the operating system. However, more and more applications are actually made up of many independent sub-processes that work together. Thus, treating “N” processes from a single application as “N” different applications and only sharing the common system resources between the applications leads to unfair resource allocation and creates a situation where some applications are potentially unnecessarily starved for processing resources.
Linux-based operation systems offer a partial solution to the above-noted problem by permitting applications to be grouped together and assigned a certain predefined percentage of processing resources. Yet, the Linux-based solution requires a manual intervention to group processes together. That is, the Linux operating system does not automatically handle grouping processes together. Moreover, when a process is manually grouped, any sub-process that is forked off from the grouped process automatically becomes part of the group to which the grouped process belongs. This is may not be what an administrator intended to occur when the grouped process was initially grouped.
Therefore, what is needed is a technique to automatically group processes together without manual intervention for purposes of sharing non-system resources between the grouped processes.